package mo.tags.greedy;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class L846 {

    public boolean isNStraightHand(int[] hand, int groupSize) {
        int n = hand.length;
        if (n % groupSize != 0) {
            return false;
        }
        Map<Integer, Integer> map = new HashMap<>();
        for (int e : hand) {
            map.put(e, map.getOrDefault(e, 0)+1);
        }
        Arrays.sort(hand);
        for (int e : hand) {
            if (!map.containsKey(e)) {
                continue;
            }
            for (int i = 0; i < groupSize; i++) {
                int num = e + i;
                if (!map.containsKey(num)) {
                    return false;
                }
                map.put(num, map.get(num)-1);
                if (map.get(num) == 0) {
                    map.remove(num);
                }
            }
        }
        return true;
    }

}
